import Vue from 'vue'
import VueRouter from 'vue-router'
import { getToken } from '@/utils/auth'
import { Message } from 'element-ui'

import PositionView from '@/views/temp/PositionView.vue'

import HomeRouter from './home'
import SettingsRouter from './settings'

Vue.use(VueRouter)

const routes = [
  ...HomeRouter,
  ...SettingsRouter,
  // 登录
  {
    path: '/login',
    name: 'Login',
    component: () => import('@/views/login/index.vue'),
    meta: {
      title: '登录',
      noAuth: true // 标记不需要验证的页面
    }
  },
  // 404 页面
  {
    path: '/404',
    name: '404',
    component: () => import('@/views/error/404.vue'),
    meta: {
      title: '404',
      noAuth: true
    }
  },
  // 捕获所有未定义路由
  {
    path: '*',
    redirect: '/404'
  },
  {
    path: '/position',
    name: 'position',
    component: PositionView
  }
]

const router = new VueRouter({
  // mode: 'history',
  // base: process.env.BASE_URL,
  routes
})

// 路由白名单
const whiteList = ['/login', '/404']

// 路由守卫
router.beforeEach((to, from, next) => {
  // 设置页面标题
  document.title = to.meta.title ? `${to.meta.title} - 群兴寿服管理系统` : '群兴寿服管理系统'

  const hasToken = getToken()

  if (hasToken) {
    if (to.path === '/login') {
      // 已登录且要跳转的页面是登录页
      // next({ path: '/' })
      next()
    } else {
      // const user = JSON.parse(localStorage.getItem('user'))
      // if (user.roleName === '超级管理员') {
      //   //   管理员
      //   next({path: '/'})
      // } else if (user.roleName === '礼仪师') {
      //   next({path: '/order'})
      // } else {
      //   next({path: '/orderManager'})
      // }
      next()
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单中，直接进入
      next()
    } else {
      // 其他没有访问权限的页面将被重定向到登录页面
      Message.warning('请先登录')
      next(`/login?redirect=${to.path}`)
    }
  }
})

export default router
